#include <iostream>
#include <memory>

struct Foo
{
    Foo() { std::cout << "Foo::Foo\n"; }
    ~Foo() { std::cout << "Foo::~Foo\n"; }
    void bar() { std::cout << "Foo::bar\n"; }
};

void test_unique_ptr()
{
    std::unique_ptr<Foo> ptr(new Foo); // 创建 std::unique_ptr，并分配一个 Foo 对象
    ptr->bar();                        // 使用 Foo 对象
    // 当 ptr 离开作用域时，它所指向的 Foo 对象将被自动删除
}

int main()
{
    test_unique_ptr();
    return 0;
}